package com.trade.common.utils;

/**
 * Description:用于封装返回结果信息
 * Author: Leisk
 * Date: 2016/2/25
 * Time: 17:22
 * Version: V1.0
 */
public class ResponseUtil {
    //状态码定义
    public static final String SELECT_OK_200 = "200";//OK - [GET]：服务器成功返回用户请求的数据，该操作是幂等的（Idempotent）
    public static final String MODIFY_OK_201 = "201";//CREATED - [POST/PUT/PATCH]：用户新建或修改数据成功。
    public static final String ACCEPTED_REQUEST_OK_202 = "202";//Accepted - [*]：表示一个请求已经进入后台排队（异步任务）
    public static final String DELETE_OK_204 = "204";//NO CONTENT - [DELETE]：用户删除数据成功。

    public static final String REQUEST_ERROR_400 = "400";//INVALID REQUEST - [POST/PUT/PATCH]：用户发出的请求有错误，服务器没有进行新建或修改数据的操作，该操作是幂等的。
    public static final String AUTHORITY_ERROR_401 = "401";//Unauthorized - [*]：表示用户没有权限（令牌、用户名、密码错误）。
    public static final String REQUEST_BAN_ERROR_403 = "403";//Forbidden - [*] 表示用户得到授权（与401错误相对），但是访问是被禁止的。
    public static final String NOT_EXIST_ERROR_404 = "404";//NOT FOUND - [*]：用户发出的请求针对的是不存在的记录，服务器没有进行操作，该操作是幂等的。
    public static final String FORMAT_ERROR_406 = "406";//Not Acceptable - [GET]：用户请求的格式不可得（比如用户请求JSON格式，但是只有XML格式）。
    public static final String RESOURCE_ERROR_410 = "410";//Gone -[GET]：用户请求的资源被永久删除，且不会再得到的。
    public static final String VERIFY_ERROR_422 = "422";//Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时，发生一个验证错误。
    public static final String NO_RESPONSE_ERROR_500 = "500";//INTERNAL SERVER ERROR - [*]：服务器处理错误，用户将无法判断发出的请求是否成功。

    /**
     * 根据返回码获取返回值
     *  creator: Leisk @ 2016-3-16
     * @param code 返回码
     * @return
     */
    public static String getMsg(String code){
        //如果没有返回码则将返回码默认设置为500
        code = XaUtil.isEmpty(code) ? NO_RESPONSE_ERROR_500 : code.trim();
        String msg = "";
        //如果没有传入结果信息描述，根据结果码自动设置
        if(SELECT_OK_200.equals(code)){
            msg = "请求数据操作成功。";
        }else if(MODIFY_OK_201.equals(code)){
            msg = "新建或修改数据成功。";
        }else if(ACCEPTED_REQUEST_OK_202.equals(code)){
            msg = "异步请求添加成功。";
        }else if(DELETE_OK_204.equals(code)){
            msg = "数据删除成功。";
        }else if(REQUEST_ERROR_400.equals(code)){
            msg = "请求有错误，系统没有进行新建或修改数据的操作。";
        }else if(AUTHORITY_ERROR_401.equals(code)){
            msg = "缺少操作权限（令牌、用户名或密码错误等）。";
        }else if(REQUEST_BAN_ERROR_403.equals(code)){
            msg = "成功获取授权，但是访问被禁止。";
        }else if(NOT_EXIST_ERROR_404.equals(code)){
            msg = "请求操作的信息不存在，系统没有进行操作。";
        }else if(FORMAT_ERROR_406.equals(code)){
            msg = "请求的结果格式不可得或格式转换错误。";
        }else if(RESOURCE_ERROR_410.equals(code)){
            msg = "请求的资源被永久删除，且不会再得到。";
        }else if(VERIFY_ERROR_422.equals(code)){
            msg = "创建信息时发生验证错误。";
        }else if(NO_RESPONSE_ERROR_500.equals(code)){
            msg = "系统处理错误，无法判断发出的请求是否成功。";
        }
        return msg;
    }
}
